package com.test.java;

import java.util.Scanner;
import java.util.regex.Pattern;

/**
 * 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。
 * 校验码的计算规则如下：首先对前17位数字加权求和，权重分配为：{7，9，10，5，8，4，2，1，6，3，7，9，10，5，8，4，2}；
 * 然后将计算的和对11取模得到值Z；最后按照以下关系对应Z值与校验码M的值：
 * Z：0 1 2 3 4 5 6 7 8 9 10
 * M：1 0 X 9 8 7 6 5 4 3 2
 * 现在给定一些身份证号码，请你验证校验码的有效性，并输出有问题的号码。
 * =============================================================
 * Version          Author          Date            Description
 * 1.0              白建         2017/12/27             创建
 * =============================================================
 */
public class Java_22
{

    public static void main(String[] args)
    {

        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        scanner.nextLine();

        String[] strings = new String[N];
        for (int i = 0; i < N; i++)
        {
            strings[i] = scanner.nextLine();
        }

        int errorCount = 0;
        String pattern = "\\d{17}";
        for (int i = 0; i < N; i++)
        {
            if (!Pattern.matches(pattern, strings[i].substring(0, 17)))
            {
                errorCount++;
                System.out.println(strings[i]);
                continue;
            }
            int result = (Character.getNumericValue(strings[i].charAt(0)) * 7
                    + Character.getNumericValue(strings[i].charAt(1)) * 9
                    + Character.getNumericValue(strings[i].charAt(2)) * 10
                    + Character.getNumericValue(strings[i].charAt(3)) * 5
                    + Character.getNumericValue(strings[i].charAt(4)) * 8
                    + Character.getNumericValue(strings[i].charAt(5)) * 4
                    + Character.getNumericValue(strings[i].charAt(6)) * 2
                    + Character.getNumericValue(strings[i].charAt(7)) * 1
                    + Character.getNumericValue(strings[i].charAt(8)) * 6
                    + Character.getNumericValue(strings[i].charAt(9)) * 3
                    + Character.getNumericValue(strings[i].charAt(10)) * 7
                    + Character.getNumericValue(strings[i].charAt(11)) * 9
                    + Character.getNumericValue(strings[i].charAt(12)) * 10
                    + Character.getNumericValue(strings[i].charAt(13)) * 5
                    + Character.getNumericValue(strings[i].charAt(14)) * 8
                    + Character.getNumericValue(strings[i].charAt(15)) * 4
                    + Character.getNumericValue(strings[i].charAt(16)) * 2) % 11;
            switch (result)
            {
            case 0:
                if (Character.getNumericValue(strings[i].charAt(17)) != 1)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 1:
                if (Character.getNumericValue(strings[i].charAt(17)) != 0)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 2:
                if (strings[i].charAt(17) != 'X')
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 3:
                if (Character.getNumericValue(strings[i].charAt(17)) != 9)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 4:
                if (Character.getNumericValue(strings[i].charAt(17)) != 8)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 5:
                if (Character.getNumericValue(strings[i].charAt(17)) != 7)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 6:
                if (Character.getNumericValue(strings[i].charAt(17)) != 6)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 7:
                if (Character.getNumericValue(strings[i].charAt(17)) != 5)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 8:
                if (Character.getNumericValue(strings[i].charAt(17)) != 4)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 9:
                if (Character.getNumericValue(strings[i].charAt(17)) != 3)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            case 10:
                if (Character.getNumericValue(strings[i].charAt(17)) != 2)
                {
                    errorCount++;
                    System.out.println(strings[i]);
                }
                break;
            default:
                break;
            }
        }
        if (errorCount == 0)
        {
            System.out.println("All passed");
        }
    }
}
